home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / JComboBox.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  11.8 KB  |  485 lines

  1. package javax.swing;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Container;
  5. import java.awt.ItemSelectable;
  6. import java.awt.event.ActionEvent;
  7. import java.awt.event.ActionListener;
  8. import java.awt.event.ItemEvent;
  9. import java.awt.event.ItemListener;
  10. import java.awt.event.KeyEvent;
  11. import java.io.IOException;
  12. import java.io.ObjectOutputStream;
  13. import java.util.Vector;
  14. import javax.accessibility.Accessible;
  15. import javax.accessibility.AccessibleContext;
  16. import javax.swing.event.ListDataEvent;
  17. import javax.swing.event.ListDataListener;
  18. import javax.swing.plaf.ComboBoxUI;
  19.  
  20. public class JComboBox extends JComponent implements ItemSelectable, ListDataListener, ActionListener, Accessible {
  21.    private static final String uiClassID = "ComboBoxUI";
  22.    protected ComboBoxModel dataModel;
  23.    protected ListCellRenderer renderer;
  24.    protected ComboBoxEditor editor;
  25.    protected int maximumRowCount = 8;
  26.    protected boolean isEditable = false;
  27.    protected Object selectedItemReminder = null;
  28.    protected KeySelectionManager keySelectionManager = null;
  29.    protected String actionCommand = "comboBoxChanged";
  30.    protected boolean lightWeightPopupEnabled = JPopupMenu.getDefaultLightWeightPopupEnabled();
  31.    boolean firedActionEventOnContentsChanged = false;
  32.    boolean firingActionEvent = false;
  33.    // $FF: synthetic field
  34.    static Class class$java$awt$event$ItemListener;
  35.    // $FF: synthetic field
  36.    static Class class$java$awt$event$ActionListener;
  37.  
  38.    public JComboBox() {
  39.       this.setModel(new DefaultComboBoxModel());
  40.       this.init();
  41.    }
  42.  
  43.    public JComboBox(Vector var1) {
  44.       this.setModel(new DefaultComboBoxModel(var1));
  45.       this.init();
  46.    }
  47.  
  48.    public JComboBox(ComboBoxModel var1) {
  49.       this.setModel(var1);
  50.       this.init();
  51.    }
  52.  
  53.    public JComboBox(Object[] var1) {
  54.       this.setModel(new DefaultComboBoxModel(var1));
  55.       this.init();
  56.    }
  57.  
  58.    public void actionPerformed(ActionEvent var1) {
  59.       Object var2 = this.getEditor().getItem();
  60.       this.firedActionEventOnContentsChanged = false;
  61.       this.getUI().setPopupVisible(this, false);
  62.       this.getModel().setSelectedItem(var2);
  63.       if (!this.firedActionEventOnContentsChanged) {
  64.          this.fireActionEvent();
  65.       } else {
  66.          this.firedActionEventOnContentsChanged = false;
  67.       }
  68.  
  69.    }
  70.  
  71.    public void addActionListener(ActionListener var1) {
  72.       super.listenerList.add(class$java$awt$event$ActionListener != null ? class$java$awt$event$ActionListener : (class$java$awt$event$ActionListener = class$("java.awt.event.ActionListener")), var1);
  73.    }
  74.  
  75.    public void addItem(Object var1) {
  76.       this.checkMutableComboBoxModel();
  77.       ((MutableComboBoxModel)this.dataModel).addElement(var1);
  78.    }
  79.  
  80.    public void addItemListener(ItemListener var1) {
  81.       super.listenerList.add(class$java$awt$event$ItemListener != null ? class$java$awt$event$ItemListener : (class$java$awt$event$ItemListener = class$("java.awt.event.ItemListener")), var1);
  82.    }
  83.  
  84.    void checkMutableComboBoxModel() {
  85.       if (!(this.dataModel instanceof MutableComboBoxModel)) {
  86.          throw new RuntimeException("Cannot use this method with a non-Mutable data model.");
  87.       }
  88.    }
  89.  
  90.    // $FF: synthetic method
  91.    static Class class$(String var0) {
  92.       try {
  93.          return Class.forName(var0);
  94.       } catch (ClassNotFoundException var2) {
  95.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  96.       }
  97.    }
  98.  
  99.    public void configureEditor(ComboBoxEditor var1, Object var2) {
  100.       var1.setItem(var2);
  101.    }
  102.  
  103.    public void contentsChanged(ListDataEvent var1) {
  104.       ComboBoxModel var2 = this.getModel();
  105.       Object var3 = var2.getSelectedItem();
  106.       if (this.selectedItemReminder == null) {
  107.          if (var3 != null) {
  108.             this.selectedItemChanged();
  109.          }
  110.       } else if (!this.selectedItemReminder.equals(var3)) {
  111.          this.selectedItemChanged();
  112.       }
  113.  
  114.       if (!this.isEditable() && var3 != null) {
  115.          boolean var6 = true;
  116.          Object var8 = var2.getSelectedItem();
  117.          int var4 = 0;
  118.  
  119.          for(int var5 = var2.getSize(); var4 < var5; ++var4) {
  120.             Object var7 = var2.getElementAt(var4);
  121.             if (var7.equals(var8)) {
  122.                var6 = false;
  123.                break;
  124.             }
  125.          }
  126.  
  127.          if (var6) {
  128.             if (var2.getSize() > 0) {
  129.                this.setSelectedIndex(0);
  130.             } else {
  131.                this.setSelectedItem((Object)null);
  132.             }
  133.          }
  134.       }
  135.  
  136.    }
  137.  
  138.    protected KeySelectionManager createDefaultKeySelectionManager() {
  139.       return new DefaultKeySelectionManager(this);
  140.    }
  141.  
  142.    protected void fireActionEvent() {
  143.       if (!this.firingActionEvent) {
  144.          this.firingActionEvent = true;
  145.          ActionEvent var1 = null;
  146.          Object[] var2 = super.listenerList.getListenerList();
  147.  
  148.          for(int var3 = var2.length - 2; var3 >= 0; var3 -= 2) {
  149.             if (var2[var3] == (class$java$awt$event$ActionListener != null ? class$java$awt$event$ActionListener : (class$java$awt$event$ActionListener = class$("java.awt.event.ActionListener")))) {
  150.                if (var1 == null) {
  151.                   var1 = new ActionEvent(this, 1001, this.getActionCommand());
  152.                }
  153.  
  154.                ((ActionListener)var2[var3 + 1]).actionPerformed(var1);
  155.             }
  156.          }
  157.  
  158.          this.firingActionEvent = false;
  159.       }
  160.  
  161.    }
  162.  
  163.    protected void fireItemStateChanged(ItemEvent var1) {
  164.       Object[] var2 = super.listenerList.getListenerList();
  165.  
  166.       for(int var3 = var2.length - 2; var3 >= 0; var3 -= 2) {
  167.          if (var2[var3] == (class$java$awt$event$ItemListener != null ? class$java$awt$event$ItemListener : (class$java$awt$event$ItemListener = class$("java.awt.event.ItemListener")))) {
  168.             ((ItemListener)var2[var3 + 1]).itemStateChanged(var1);
  169.          }
  170.       }
  171.  
  172.    }
  173.  
  174.    public AccessibleContext getAccessibleContext() {
  175.       if (super.accessibleContext == null) {
  176.          super.accessibleContext = new AccessibleJComboBox(this);
  177.       }
  178.  
  179.       return super.accessibleContext;
  180.    }
  181.  
  182.    public String getActionCommand() {
  183.       return this.actionCommand;
  184.    }
  185.  
  186.    public ComboBoxEditor getEditor() {
  187.       return this.editor;
  188.    }
  189.  
  190.    public Object getItemAt(int var1) {
  191.       return this.dataModel.getElementAt(var1);
  192.    }
  193.  
  194.    public int getItemCount() {
  195.       return this.dataModel.getSize();
  196.    }
  197.  
  198.    public KeySelectionManager getKeySelectionManager() {
  199.       return this.keySelectionManager;
  200.    }
  201.  
  202.    public int getMaximumRowCount() {
  203.       return this.maximumRowCount;
  204.    }
  205.  
  206.    public ComboBoxModel getModel() {
  207.       return this.dataModel;
  208.    }
  209.  
  210.    public ListCellRenderer getRenderer() {
  211.       return this.renderer;
  212.    }
  213.  
  214.    public int getSelectedIndex() {
  215.       Object var1 = this.dataModel.getSelectedItem();
  216.       int var2 = 0;
  217.  
  218.       for(int var3 = this.dataModel.getSize(); var2 < var3; ++var2) {
  219.          Object var4 = this.dataModel.getElementAt(var2);
  220.          if (var4.equals(var1)) {
  221.             return var2;
  222.          }
  223.       }
  224.  
  225.       return -1;
  226.    }
  227.  
  228.    public Object getSelectedItem() {
  229.       return this.dataModel.getSelectedItem();
  230.    }
  231.  
  232.    public Object[] getSelectedObjects() {
  233.       Object var1 = this.getSelectedItem();
  234.       if (var1 == null) {
  235.          return new Object[0];
  236.       } else {
  237.          Object[] var2 = new Object[]{var1};
  238.          return var2;
  239.       }
  240.    }
  241.  
  242.    public ComboBoxUI getUI() {
  243.       return (ComboBoxUI)super.ui;
  244.    }
  245.  
  246.    public String getUIClassID() {
  247.       return "ComboBoxUI";
  248.    }
  249.  
  250.    public void hidePopup() {
  251.       this.setPopupVisible(false);
  252.    }
  253.  
  254.    private void init() {
  255.       this.installAncestorListener();
  256.       ((JComponent)this).setOpaque(true);
  257.       ((JComponent)this).setAlignmentX(0.0F);
  258.       ((JComponent)this).setAlignmentY(0.5F);
  259.       this.updateUI();
  260.    }
  261.  
  262.    public void insertItemAt(Object var1, int var2) {
  263.       this.checkMutableComboBoxModel();
  264.       ((MutableComboBoxModel)this.dataModel).insertElementAt(var1, var2);
  265.    }
  266.  
  267.    protected void installAncestorListener() {
  268.       ((JComponent)this).addAncestorListener(new 1(this));
  269.    }
  270.  
  271.    public void intervalAdded(ListDataEvent var1) {
  272.       this.contentsChanged(var1);
  273.    }
  274.  
  275.    public void intervalRemoved(ListDataEvent var1) {
  276.       this.contentsChanged(var1);
  277.    }
  278.  
  279.    public boolean isEditable() {
  280.       return this.isEditable;
  281.    }
  282.  
  283.    public boolean isFocusTraversable() {
  284.       return this.getUI().isFocusTraversable(this);
  285.    }
  286.  
  287.    public boolean isLightWeightPopupEnabled() {
  288.       return this.lightWeightPopupEnabled;
  289.    }
  290.  
  291.    public boolean isPopupVisible() {
  292.       return this.getUI().isPopupVisible(this);
  293.    }
  294.  
  295.    protected String paramString() {
  296.       String var1 = this.selectedItemReminder != null ? this.selectedItemReminder.toString() : "";
  297.       String var2 = this.isEditable ? "true" : "false";
  298.       String var3 = this.lightWeightPopupEnabled ? "true" : "false";
  299.       return super.paramString() + ",isEditable=" + var2 + ",lightWeightPopupEnabled=" + var3 + ",maximumRowCount=" + this.maximumRowCount + ",selectedItemReminder=" + var1;
  300.    }
  301.  
  302.    public void processKeyEvent(KeyEvent var1) {
  303.       if (var1.getKeyCode() == 9) {
  304.          this.hidePopup();
  305.       }
  306.  
  307.       super.processKeyEvent(var1);
  308.    }
  309.  
  310.    public void removeActionListener(ActionListener var1) {
  311.       super.listenerList.remove(class$java$awt$event$ActionListener != null ? class$java$awt$event$ActionListener : (class$java$awt$event$ActionListener = class$("java.awt.event.ActionListener")), var1);
  312.    }
  313.  
  314.    public void removeAllItems() {
  315.       this.checkMutableComboBoxModel();
  316.       MutableComboBoxModel var1 = (MutableComboBoxModel)this.dataModel;
  317.       int var2 = var1.getSize();
  318.       if (var1 instanceof DefaultComboBoxModel) {
  319.          ((DefaultComboBoxModel)var1).removeAllElements();
  320.       } else {
  321.          for(int var3 = 0; var3 < var2; ++var3) {
  322.             Object var4 = var1.getElementAt(0);
  323.             var1.removeElement(var4);
  324.          }
  325.       }
  326.  
  327.    }
  328.  
  329.    public void removeItem(Object var1) {
  330.       this.checkMutableComboBoxModel();
  331.       ((MutableComboBoxModel)this.dataModel).removeElement(var1);
  332.    }
  333.  
  334.    public void removeItemAt(int var1) {
  335.       this.checkMutableComboBoxModel();
  336.       ((MutableComboBoxModel)this.dataModel).removeElementAt(var1);
  337.    }
  338.  
  339.    public void removeItemListener(ItemListener var1) {
  340.       super.listenerList.remove(class$java$awt$event$ItemListener != null ? class$java$awt$event$ItemListener : (class$java$awt$event$ItemListener = class$("java.awt.event.ItemListener")), var1);
  341.    }
  342.  
  343.    public boolean selectWithKeyChar(char var1) {
  344.       if (this.keySelectionManager == null) {
  345.          this.keySelectionManager = this.createDefaultKeySelectionManager();
  346.       }
  347.  
  348.       int var2 = this.keySelectionManager.selectionForKey(var1, this.getModel());
  349.       if (var2 != -1) {
  350.          this.setSelectedIndex(var2);
  351.          return true;
  352.       } else {
  353.          return false;
  354.       }
  355.    }
  356.  
  357.    protected void selectedItemChanged() {
  358.       if (this.selectedItemReminder != null) {
  359.          this.fireItemStateChanged(new ItemEvent(this, 701, this.selectedItemReminder, 2));
  360.       }
  361.  
  362.       this.selectedItemReminder = this.getModel().getSelectedItem();
  363.       if (this.selectedItemReminder != null) {
  364.          this.fireItemStateChanged(new ItemEvent(this, 701, this.selectedItemReminder, 1));
  365.       }
  366.  
  367.       this.fireActionEvent();
  368.       this.firedActionEventOnContentsChanged = true;
  369.    }
  370.  
  371.    public void setActionCommand(String var1) {
  372.       this.actionCommand = var1;
  373.    }
  374.  
  375.    public void setEditable(boolean var1) {
  376.       boolean var2 = var1 != this.isEditable;
  377.       this.isEditable = var1;
  378.       if (var2) {
  379.          ((JComponent)this).firePropertyChange("editable", this.isEditable ^ true, this.isEditable);
  380.       }
  381.  
  382.    }
  383.  
  384.    public void setEditor(ComboBoxEditor var1) {
  385.       ComboBoxEditor var2 = this.editor;
  386.       if (this.editor != null) {
  387.          this.editor.removeActionListener(this);
  388.       }
  389.  
  390.       this.editor = var1;
  391.       if (this.editor != null) {
  392.          this.editor.addActionListener(this);
  393.       }
  394.  
  395.       ((JComponent)this).firePropertyChange("editor", var2, this.editor);
  396.    }
  397.  
  398.    public void setEnabled(boolean var1) {
  399.       super.setEnabled(var1);
  400.       ((JComponent)this).firePropertyChange("enabled", ((Component)this).isEnabled() ^ true, ((Component)this).isEnabled());
  401.    }
  402.  
  403.    public void setKeySelectionManager(KeySelectionManager var1) {
  404.       this.keySelectionManager = var1;
  405.    }
  406.  
  407.    public void setLightWeightPopupEnabled(boolean var1) {
  408.       this.lightWeightPopupEnabled = var1;
  409.    }
  410.  
  411.    public void setMaximumRowCount(int var1) {
  412.       int var2 = this.maximumRowCount;
  413.       this.maximumRowCount = var1;
  414.       ((JComponent)this).firePropertyChange("maximumRowCount", var2, this.maximumRowCount);
  415.    }
  416.  
  417.    public void setModel(ComboBoxModel var1) {
  418.       ComboBoxModel var2 = this.dataModel;
  419.       if (this.dataModel != null) {
  420.          this.dataModel.removeListDataListener(this);
  421.       }
  422.  
  423.       this.dataModel = var1;
  424.       ((JComponent)this).firePropertyChange("model", var2, this.dataModel);
  425.       this.dataModel.addListDataListener(this);
  426.       ((Container)this).invalidate();
  427.    }
  428.  
  429.    public void setPopupVisible(boolean var1) {
  430.       this.getUI().setPopupVisible(this, var1);
  431.    }
  432.  
  433.    public void setRenderer(ListCellRenderer var1) {
  434.       ListCellRenderer var2 = this.renderer;
  435.       this.renderer = var1;
  436.       ((JComponent)this).firePropertyChange("renderer", var2, this.renderer);
  437.       ((Container)this).invalidate();
  438.    }
  439.  
  440.    public void setSelectedIndex(int var1) {
  441.       int var2 = this.dataModel.getSize();
  442.       if (var1 == -1) {
  443.          this.setSelectedItem((Object)null);
  444.       } else {
  445.          if (var1 < -1 || var1 >= var2) {
  446.             throw new IllegalArgumentException("setSelectedIndex: " + var1 + " out of bounds");
  447.          }
  448.  
  449.          this.setSelectedItem(this.dataModel.getElementAt(var1));
  450.       }
  451.  
  452.    }
  453.  
  454.    public void setSelectedItem(Object var1) {
  455.       this.firedActionEventOnContentsChanged = false;
  456.       this.dataModel.setSelectedItem(var1);
  457.       if (!this.firedActionEventOnContentsChanged) {
  458.          this.fireActionEvent();
  459.       } else {
  460.          this.firedActionEventOnContentsChanged = false;
  461.       }
  462.  
  463.    }
  464.  
  465.    public void setUI(ComboBoxUI var1) {
  466.       super.setUI(var1);
  467.    }
  468.  
  469.    public void showPopup() {
  470.       this.setPopupVisible(true);
  471.    }
  472.  
  473.    public void updateUI() {
  474.       this.setUI((ComboBoxUI)UIManager.getUI(this));
  475.    }
  476.  
  477.    private void writeObject(ObjectOutputStream var1) throws IOException {
  478.       var1.defaultWriteObject();
  479.       if (super.ui != null && this.getUIClassID().equals("ComboBoxUI")) {
  480.          super.ui.installUI(this);
  481.       }
  482.  
  483.    }
  484. }
  485.